package cn.swjtuhc.ss.hljapi.controller.admin;

import cn.swjtuhc.ss.hljapi.common.Result;
import cn.swjtuhc.ss.hljapi.mapper.EssayMapper;
import cn.swjtuhc.ss.hljapi.pojo.Essay;
import cn.swjtuhc.ss.hljapi.pojo.Viewer;
import cn.swjtuhc.ss.hljapi.service.EssayService;
import cn.swjtuhc.ss.hljapi.service.ViewerService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @author 程序狗没有春天
 * @version 1.00
 * @createTime 2024/8/24 23:32
 */
@Slf4j
@RequestMapping("/admin/essay")
@RestController
public class AdminEssayController {
    @Autowired
    private EssayService essayService;
    @Autowired
    private EssayMapper essayMapper;
    @Autowired
    private ViewerService viewerService;

    @GetMapping
    public Result findPage(@RequestParam(defaultValue = "1") Integer pageNum,
                           // 默认的页码是1
                           @RequestParam(defaultValue = "10") Integer pageSize, // 默认的每页显示数量是10
                           @RequestParam(required = false) String search) {


        // 创建一个 Page<Essay> 对象
        Page<Essay> page = new Page<>(pageNum, pageSize);

        // 创建一个 LambdaQueryWrapper 对象，用于构建查询条件(支持很多种条件查询 )
        LambdaQueryWrapper<Essay> wrapper = Wrappers.<Essay>lambdaQuery();

        // 如果搜索字符串不为空，则添加模糊匹配条件
        if (!"".equals(search)) {
            wrapper.like(Essay::getTitle, search); // 使用 lambda 表达式来设置模糊匹配条件
        }

        // 使用正确的泛型调用 selectPage 方法
        Page<Essay> userPage = essayMapper.selectPage(page, wrapper);

        // 返回查询结果
        return Result.success(userPage);
    }
    @PostMapping("/save")
    public Result save(@RequestBody Essay essay){
        if (essay.getTitle() == null || essay.getContent() == null){
            return Result.fail("标题和内容不能为空");
        }else {
            essayService.insertAll(essay);
            return Result.success("添加成功");
        }
    }
    @DeleteMapping("/del/{id}")
    public Result delete(@PathVariable Integer id){
        essayService.deleteById(id);
        return Result.success("删除成功");
    }
    @PostMapping("/update")
    public Result update(@RequestBody Essay essay){
        essay.getUpdateTime().setTime(System.currentTimeMillis());
        essayService.updateById(essay);
        return Result.success("修改成功");
    }
    @GetMapping("/viewer")
    public Result findViewer() {
        Viewer byId = viewerService.getById(1);
        return Result.success(byId);
    }
}
